/* src/include/port/linux.h */

/*
 * 截至2007年7月，所有已知版本的Linux内核在执行shmctl()操作时，
 * 有时会在EINVAL是正确的情况下返回EIDRM（当提供的shm ID的低
 * 次15位与分配给新shmem段的槽号匹配时会发生这种情况）。我们通过
 * 假设在PGSharedMemoryIsInUse()中EIDRM意味着EINVAL来处理这个问题。
 * 这是相对安全的，因为实际上Linux没有理由返回EIDRM；它不跟踪
 * 已移除的段，因此无法将它们与私有段区分开。不过，总有一天那段
 * 代码可能会升级，我们将不得不在这里进行内核版本测试。
 */
#define HAVE_LINUX_EIDRM_BUG

/*
 * 将默认的wal_sync_method设置为fdatasync。对于最近的Linux版本，
 * xlogdefs.h的正常规则会优先选择open_datasync，而(A)其表现并不
 * 更好以及(B)在ext4 data=journal文件系统上会导致直接失败，
 * 因为这些不支持O_DIRECT。
 */
#define PLATFORM_DEFAULT_SYNC_METHOD	SYNC_METHOD_FDATASYNC
